
package javaapplication6;
import java.net.URL;
import java.util.ArrayList;

public class DownloadManager {

	// уникальный экземпляр класса
	private static DownloadManager sInstance = null;
	//кол-во потоков для каждой закачки
	private static final int DEFAULT_NUM_CONN_PER_DOWNLOAD = 3;
        // начальная папка для загружаемого файла
	public static final String DEFAULT_OUTPUT_FOLDER = "";
	// кол-во соединений для каждой закачки
	private int mNumConnPerDownload;
        // список загрузок
	private ArrayList<Dowloader> mDownloadList;

	// Конструктор класса DownloadManager
	protected DownloadManager() {
		mNumConnPerDownload = DEFAULT_NUM_CONN_PER_DOWNLOAD;
		mDownloadList = new ArrayList<Dowloader>();
	}

	// Фунция получения числа соединений
	public int getNumConnPerDownload() {
		return mNumConnPerDownload;
	}

	// метод установки кол-ва соединений
	public void SetNumConnPerDownload(int value) {
		mNumConnPerDownload = value;
	}

        // Функция получения загрузки
	public Dowloader getDownload(int index) {
		return mDownloadList.get(index);
	}
//Функция удаления загрузки
	public void removeDownload(int index) {
		mDownloadList.remove(index);
	}

	// Получение списка загрузок
	public ArrayList<Dowloader> getDownloadList() {
		return mDownloadList;
	}

// Создание загрузки
	public synchronized  Dowloader createDownload(URL verifiedURL, String outputFolder,ProxySettings Prs) {
		HttpDownloader fd = new HttpDownloader(verifiedURL, outputFolder, mNumConnPerDownload,Prs);
		mDownloadList.add(fd); // добавление в список загрузок новой
		return fd;
	}

	// Получение уникального экземпляра класса
	public static DownloadManager getInstance() {
		if (sInstance == null)
			sInstance = new DownloadManager();
		return sInstance;
	}

	// Проверка ссылки на файл
	public static URL verifyURL(String fileURL) {
        if (!fileURL.toLowerCase().startsWith("http://"))
            return null;
        // Проверка URL
        URL verifiedUrl = null;
        try {
            verifiedUrl = new URL(fileURL);
        } catch (Exception e) {
            return null;
        }
        // Не пустой ли  URL
        if (verifiedUrl.getFile().length() < 2)
            return null;
        return verifiedUrl;
	}
}